package com.yanyu.space.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yanyu.space.sys.bean.po.Dept;
import com.yanyu.space.sys.bean.vo.common.TreeSelect;
import com.yanyu.space.sys.bean.vo.dept.DeptAddVo;
import com.yanyu.space.sys.bean.vo.dept.DeptUpdateVo;
import com.yanyu.space.sys.bean.vo.dept.RoleDeptTreeselectVo;

import java.util.List;

/**
 * @author yanyu
 */
public interface IDeptService extends IService<Dept> {

    /**
     * 分页查询
     *
     * @return
     */
    List<Dept> list(String deptName, Integer enabled);

    /**
     * 通过id查询部门信息
     *
     * @param id
     * @return
     */
    Dept getById(Long id);

    /**
     * 新增部门信息
     *
     * @param vo
     */
    void add(DeptAddVo vo) throws InterruptedException;

    /**
     * 通过id更新部门信息
     *
     * @param vo
     */
    void updateById(DeptUpdateVo vo);

    /**
     * 通过id删除
     *
     * @param id
     */
    void delete(Long id);

    /**
     * @return
     */
    List<TreeSelect> treeselect();

    /**
     * 根据角色ID查询部门树结构
     *
     * @param roleId
     * @return
     */
    RoleDeptTreeselectVo roleDeptTreeselect(Long roleId);

    /**
     * 获取所有孩子节点
     *
     * @param deptId
     * @return
     */
    List<Dept> listChildren(Long deptId);

    /**
     * 查询
     *
     * @param id
     * @return
     */
    List<Dept> listExclude(Long id);
}
